package ASAInstruction;

import exceptions.ExecutionException;
import java.util.ArrayList;
import java.util.List;

/**
 * Classe representant un bloc d'instruction {}
 * @author D.romain
 * @author O.riad
 */
public class ASAInstructBloc extends ASAInstruction{
    
    //List d'instruction que contient le bloc
    private List<ASAInstruction> exprContent;
    
    /**
     * Constructeur qui initialise la liste d'instruction
     */
    public ASAInstructBloc(){
        this.exprContent = new ArrayList<ASAInstruction>();
    }
    
    /**
     * Permet d'ajouter une instruction au bloc
     * @param instruction 
     */
    public void add(ASAInstruction instruction){
        this.exprContent.add(instruction);
    }

    /**
     * Exectue l'ensemble des instructions contenu
     * dans le bloc
     * @return 0
     * @throws ExecutionException 
     */
    @Override
    public int execute() throws ExecutionException {
        
         for(int i=0; i<this.exprContent.size(); i++){
            this.exprContent.get(i).execute();
        }
         return 1;
    }
    
    /**
     * Renvoie la liste d'instruction du bloc courant
     * @return Liste d'ASAInstruction
     */
    public List<ASAInstruction> getCode(){
        return this.exprContent;
    }
    
}
